package LiaoTianYouxi;
/*
        分析该聊天程序
        1.我需要发送搭建流，并且我需要告诉我自己的终端
        2.我要发送消息给服务器
        3.同时我需要得到服务器给我的消息，并且打印出来
        4.关流
        5.我要抛异常
        文档注释
        javadoc.exe(生成htl文档)
        javaAPI
        6：我需要了解list里面是被序列化的对象，那为什么list已经被序列化，并且我需要知道序列化和反序列化的操作，及其作用效果
 */

import com.sun.jdi.PathSearchingVirtualMachine;

import java.io.*;
import java.net.Socket;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Scanner;

public class Testclient {

    public static void main(String[] args) throws IOException {
        System.out.println("客户端启动");
        Test test =new Test();
        // 1.我需要发送搭建流，并且我需要告诉我自己的终端
        Socket s = new Socket("localhost", 6888);
        DataInputStream dis = new DataInputStream(s.getInputStream());
        //3.我要发送消息给服务器
        OutputStream os = s.getOutputStream();
        DataOutputStream dos = new DataOutputStream(os);
        ObjectOutputStream oos =new ObjectOutputStream(os);
        Scanner scanner = new Scanner(System.in);
        try {
            //输出服务器是否接受到了
            new Thread(() -> {
                try {
                    while (true) {
                        String message = dis.readUTF();
                        System.out.println("服务器接收到了：" + message);

                    }
                } catch (IOException e) {
                    System.out.println("出错了");
                }
            }).start();
            while (true) {
                String str = scanner.nextLine();
                //这里我需要对输入的东西进行一个switch
                if(str=="2"){
                    //这里我需要对输入的东西进行调用函数,该函数值创建一个Book对象，而不是需要进行文件操作（在客户端这边）返回的是一个出书画的Book对象
                    oos.writeObject(test.getMenu1(2));
                }else if(str=="3"){
                    oos.writeObject(test.getMenu1(3));
                }
                else{
                    dos.writeUTF(str);
                }
            }
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("服务器已关闭连接");
        } finally {
            try {
                if (dos != null) {
                    dos.close();
                }
                if (os != null) {
                    os.close();
                }
                if (dis != null) {
                    dis.close();
                }
                if (s != null) {
                    s.close();
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}